■ コンパレータ                                                         

  
   


■ 外部リファレンスをつかったコンパレータ

  <試作品仕様>
 ・ 外部リファレンス電圧として、基準電圧2.4Vを
   
  <試作品回路図>(→回路図のPDFファイル
    PIC18F87K90をつかった場合の回路図を以下に示します。

 




<試作品外観>下記の写真には上記回路図にはない、また本テーマと関係のない部品が多々写っています


     

          

   <プログラム例>




#include <p18f87K90.h>

#include <stdio.h>
#include <delays.h>
#include <timers.h>
#include <pwm.h>
#include <portb.h>




 
#pragma config FOSC = XT                //FOSC = HS // システムクロック=1MHz 
#pragma config XINST = OFF
#pragma config  WDTEN = OFF     //configではウォッドックタイマOFF //WDTCONレジスタSWDTENビットでスリープ時WDTをOFFに制御






        

void main (void)
{

        TRISJbits.TRISJ0 = 0;
        TRISFbits.TRISF5 = 1;
        TRISFbits.TRISF2 = 0;



//コンパレータ設定
        //Comparator Control 1 Register (CM1CON レジスタ)
        CM1CONbits.CON = 0;     //1: enable コンパレータイネーブル Comprator Enable nit
        CM1CONbits.COE = 0;     //1: output enable //コンパレータ1の出力がC1OUT ピンに現れる//


//      CM1CONbits.CON = 1;     //1: enable コンパレータイネーブル Comprator Enable nit

        CM1CONbits.COE = 1;     //1: output enable //★★ コンパレータ1の出力がC1OUT ピンに現れる
                                                //0: output disable //★★ コンパレータ1の出力がC1OUT ピンに現れない


        CM1CONbits.CPOL = 0;    //0: not invert //コンパレータ極性セレクトビット
        CM1CONbits.EVPOL0 = 0;  //00:コンパレータ出力に伴う割り込み発生なし// Interrupt generation is disable //Interrupt polality select bit
        CM1CONbits.EVPOL1 = 0;
        CM1CONbits.CREF = 1;    //1: Comparetor Reference Select bit //enable   //★★ 外部リファレンス電圧を使用
        CM1CONbits.CCH1 = 0;    //00: Comparator Chanel Select Bit      //★★ C1INB pinを使用する旨 設定
        CM1CONbits.CCH0 = 0;

        //Comparator Voltage Reference Control Register(CVRCON レジスタ)
        CVRCONbits.CVREN = 1;   //0: コンパレータレファレンス制御レジスタ ON //Comparator Reference Enable bit
        CVRCONbits.CVROE = 0;   //1: 内蔵Vref OFF //Comparator Vref Output Enable bit//外部リファレンス電圧を使っているので内蔵VREFはOFFでよい
        CVRCONbits.CVRSS = 1;   //1: コンパレータリファレンスソースCVref = Vref+ - Vref- //Comparator Vref Source Select bit
                                                        //★★ 差動でなく外部入力Refを使う時は、Verf-は 0vに接続する必要がある。
                                                        //0: PICの電源電圧 CVref = AVdd - AVss

        CVRCONbits.CVR4 = 1;    //10000: 16  コンパレータのシュレッシュホールドレベル Comparator Vref Value Selection bit 
        CVRCONbits.CVR3 = 0;    //★★ スレッシュホールド電圧の設定: CVref = Vref-  +  (Vref+  - Vref-) × CVR<4:0>/32
        CVRCONbits.CVR2 = 0;    // CVref = 2.4v × (0b10000)/32 = 2.4v × 16/32 = 1.2v
        CVRCONbits.CVR1 = 0;    //
        CVRCONbits.CVR0 = 0;    //

        CM1CONbits.CON = 1;             //1: enable コンパレータイネーブル Comprator Enable nit






         while (1)
    {





                                if(CMSTATbits.CMP1OUT == 1)     //電流が0.1mA以上の場合// 電流有無検出
                                {
                                        LATJbits.LATJ0 = 0;             //コンパレータレベルチェック用LED
                                
                                }
                                else 
                                {
                                        LATJbits.LATJ0 = 1;             //コンパレータレベルチェック用LED
                                
                                }



        }


}

<実行結果>
  スレッシュホールド電圧 12vを 境にON/OFFした結果を以下に示す。
 尚、Vref- を0Vに接続しないと スレッシュホールド電圧は リファレンス電圧となる。
コンパレータ リファレンス電圧測定
 (Vref+(27pin)電圧) 
 

・C1OUT(18pin)
・RJ0(62pin)
LED   OFF
コンパレータ入力電圧 =13.05v
(C1INB(15pin)電圧)
LED   ON

コンパレータ入力電圧 = 11.07v
(C1INB(15pin)電圧)